import scala.io.{BufferedSource, Source}

object Demo12WordCountScala {
  def main(args: Array[String]): Unit = {
    // 1、读取文件
    val bs: BufferedSource = Source
      .fromFile("Scala/data/words.txt")

    // 2、加载数据
    val lineList: List[String] = bs.getLines().toList

    // 3、将每一行数据进行切分 并作 扁平化处理
    val words: List[String] = lineList.flatMap(line => line.split(","))

    // 4、按照每个单词进行分组 会的到一个Map
    // Map的Key为指定的分组字段、Map的Value是一个List，
    // 属于同一个分组的所有的元素会进入同一个List
    val wordsKV: Map[String, List[String]] = words.groupBy(word => word)

    // 5、统计每个单词的数量
    val wordCnt: List[String] = wordsKV.map(kv => s"${kv._1},${kv._2.size}").toList

    // 6、输出最后的结果
    wordCnt.foreach(println)

    // 链式调用
    Source
      .fromFile("Scala/data/words.txt")
      .getLines()
      .toList
      .flatMap(_.split(","))
      .groupBy(word => word)
      .map(kv => s"${kv._1},${kv._2.size}")
      .foreach(println)

  }

}
